This invention relates to a method and apparatus for processing asynchronous data. In particular, this invention relates to a method and apparatus for distributing asynchronous data from different data channels onto different processors to maximize data processing capability and to minimize processing delay and data loss.
Conventional telecommunication systems use circuit-switched domains to transfer voice data over a communication network. In these circuit-switched systems, it is a straightforward process to distribute the data of various speech calls onto different speech processors in the telecommunication system.
Today, however, a paradigm shift is occurring in the telecommunication industry resulting in an increased use of asynchronous switch domains to carry voice data over networks. This shift has lead to a need for switches that are capable of processing this asynchronous voice traffic efficiently. In particular, these switches must be designed so as to minimize speech call delay and to avoid injecting excessive jitter onto the processed output signals. Another important consideration in designing these asynchronous switches is that, in many cases, the ultimate destination of the switched asynchronous data is a circuit-switched domain, requiring highly synchronized data to operate efficiently. These goals must be balanced against the need to utilize the network processing resources in the most efficient manner possible.
Minimizing the amount of speech call delay is particularly important in today""s mobile telecommunication systems, as any call delay introduced into the voice channel will degrade the quality of the voice transmission. Voice quality degradation results primarily from delayed speech data that disturbs the time-relation of the various speech samples comprising a voice transmission. This delay may occur because of environment conditions, processing delay, or as a result of activated error concealment procedures. These concealment procedures are activated in the speech processors of the telecommunication system whenever there exist excessively delayed (and thus unusable) speech data in the voice transmission. The procedures operate to silently discard speech data that is determined to exceed a predetermined amount of call delay.
Additional call delay may result when asynchronous speech samples from multiple speech channels are routed to a single processing unit for speech processing. The speech samples often must be queued before being processed because of limited resources available at the single processing unit. This queuing introduces call delay into the speech channels that can degrade the voice quality. The task of minimizing queue-induced call delay may be further complicated when using multi-processor switching nodes to route the asynchronous voice traffic throughout the telecommunication system. The asynchronous nature of the speech samples makes it difficult to distribute the samples in the multi-processor unit so as to minimize the amount of queuing, while maximizing the processing unit""s efficiency.
The use of code/decode (CODEC) algorithms to process speech data is pervasive in today""s speech processors. These CODECs produce packets of compressed speech data that are sent over a speech channel at constant time intervals. Although the speech samples processed using a CODEC remain substantially asynchronous in nature, the CODEC has the effect of introducing some synchronicity into the transmitted data. For example, speech samples dispatched from the CODEC will arrive at their destination within a reasonably fixed time-interval. This interval is commonly referred to as the packet repetition time. If the amount of jitter introduced into the voice channels can be kept to a reasonably low level, then the speech samples dispatched by the CODEC will arrive at their destinations relative to the packet repetition time of the channel. This knowledge of the packet repetition time for the various voice channels may be exploited to design a more efficient method of distributing speech data onto the different processors of a multi-processor speech processing unit.
In addition to the use of CODECs, other data processing functions have the effect of either introducing some degree of synchronicity into the processed asynchronous data or at least preserving the synchronicity introduced by other data processing functions present in the system. Examples of these functions include, e.g., echo cancellation, tone sending and receiving, Dual-Tone-Multi-Frequency (DTMF) sending and receiving, video coding and decoding, ATM, IP, Frame Relay, FDMA, TDMA, CDMA, and the like. Again, if the amount of jitter introduced in processing the data can be kept to a reasonably low level, then the synchronicity introduced into the data as a result of the processing can be exploited to provide a more efficient method of distributing data onto the different processors of a multi-processor data processing unit.
Asynchronous switch domains may be implemented in a variety of telecommunication systems. One type of system in which asynchronous domains may be used is a Public Land Mobile Network (PLMN). The nature of the air interface in a PLMN is such that packets may occasionally be lost due to network environment conditions. The amount of packet loss that may occur in an asynchronous switch based network can be higher than the amount of packet loss that occurs in a PLMN using Time Division Multiplexed/Statistical Time Multiplexed (TDM/STM) based switching. However, it is observed that speech is relatively insensitive to packet loss as compared to the effect of packet loss on pure data transmissions.
Knowledge of the robustness of speech with respect to packet loss would make it possible in a PLMN having asynchronous switch domains to allow a certain amount of loss to occur in each voice channel without affecting voice quality. There are limits to the amount of packet loss that can be sustained before voice quality is degraded, however, thus the amount of packet loss per channel should be kept below some determined level. The flexibility to selectively discard speech packets may be exploited to design a more efficient method of processing speech data in a multi-processor unit by allowing the unit to resolve resource conflicts through the discarding of packets in heavily loaded processors.
Therefore, in a telecommunication system having asynchronous switch domains and a plurality of processing units for processing data samples, there is a need for a method and apparatus for distributing the data samples among the plurality of processing units to maximize processing capability and minimize processing delay and data loss in the system.
It is therefore an object of the invention to provide a method and apparatus for distributing asynchronous data samples among a plurality of data processors operating in a telecommunication system using information related to an expected arrival time of the data samples so as to minimize the amount of data queuing required at each of the processors. It is yet another object of the invention that the data processors selectively discard data samples to maximize the overall processing capability of the data processing resources available in the telecommunication system.
According to the invention, these and other objects are met by a method and apparatus for processing asynchronous data. Asynchronous data samples are received from a plurality of data channels for distribution onto a plurality of data processors each having a plurality of processing-slots. The identity of a channel from which a sample is received is determined using a channel ID associated with the sample. A time-stamp is assigned to at least one sample from each respective channel. Finally, at least one time-stamped sample is assigned to a processing-slot such that the separation between the time-stamp and a nearest time-stamp of at least one sample assigned to at least one other processing-slot of each respective processor is maximized.
According to an exemplary embodiment, an un-stamped data sample is assigned to a same processing-slot assigned to at least one other sample received from the respective channel the un-stamped sample is received from. An entry in a time distribution table is made for each assigned sample, the entry including the channel ID of the assigned sample, the time-stamp of the assigned sample, and a processing-slot ID corresponding to the processing-slot the sample is assigned to. The time distribution table is searched for a matching entry having the same channel ID as the un-stamped data sample. An un-stamped data sample is assigned to the processing-slot corresponding to the processing-slot ID of the matching entry. When the processing of data samples for a channel is complete, the entry in the time distribution table having the corresponding channel ID is removed.
According to another exemplary embodiment, a processing-slot distribution matrix is created having a number of matrix entries equal to the number of processing slots, wherein a column of the matrix corresponds to a respective processor and a row of the matrix corresponds to a respective processing-slot. The channel ID and time-stamp for each assigned sample is stored in a matrix entry corresponding to the processor and processing-slot to which each sample is assigned. The maximum separation between the time-stamp of a sample to be assigned a processing-slot and the nearest time-stamp is determined by comparing time-stamp entries in the processing slot distribution matrix. The channel ID and time-stamp method are removed from the distribution matrix for an assigned sample when the processing of data samples for the channel corresponding to the channel ID of the assigned sample is complete.